Reverberation processor for interactive audio applications

ABSTRACT

A reverberation processor is provided comprising a plurality of delay lines implemented in delay line memory, and hardware operable to introduce an echo effect into the reverberation decay and to provide a control parameter to control salience of the echo effect. The delay lines are operable to generate a reverberation decay in response to an input signal. In one embodiment, an increase and a decrease in the salience of the echo effect is dependent upon the control parameter. The control parameter may provide continuous control over the salience of the echo effect and the echo effect may be embedded within the reverberation decay. In one embodiment, a range of delay lengths across which the plurality of delay lines is distributed is reduced to produce a repeating echo effect. The invention extends to method of and software product for providing reverberation.

RELATED APPLICATIONS

[0001] This application is a continuation of U.S. application Ser. No.09/547,365 filed Apr. 11, 2000.

BACKGROUND OF THE INVENTION

[0002] Virtual auditory displays (including computer games, virtualreality systems or computer music workstations) create virtual worlds inwhich a virtual listener can hear sounds generated from sound sourceswithin these worlds. In addition to reproducing sound as generated bythe source, the computer also processes the source signal to simulatethe effects of the virtual environment on the sound emitted by thesource. In a first-person computer game, the player hears the sound thathe/she would hear if he/she were located in the position of the virtuallistener in the virtual world. One important environmental factor isreverberation, which refers to the reflections of the generated soundwhich bounce off objects in the environment. Reverberation can becharacterized by measurable criteria, such as the reverberation time,which is a measure of the time it takes for the reflections to becomeimperceptible. Computer generated sounds without reverberation sounddead or dry.

[0003] Artificial reverberation algorithms are well known in the art andare described e. g. in Stautner, J., and Puckette, M. (1982). DesigningMulti-Channel Reverberators. Computer Music Journal, Vol. 6, no. 1,Dattorro, J. (1997). Effect Design (Part 1: Reverberator and OtherFilters; Part 2: Delay-Line Modulation and Chorus). Journal of the AudioEngineering Society, Vol. 45, no. 9-10, Jot, J. -M. (1997). EfficientModels for Reverberation and Distance Rendering in Computer Music andVirtual Audio Reality. Proceedings of the 1997 International ComputerMusic Conference. The implementation of these algorithms on digitalsignal processors is based on a network of digital delay lines which areconnected together and to the input and output points of the algorithmby feed-forward or feedback connections. Rooms of different sizes andacoustical properties can be simulated by modifying the topology of thenetwork (the number of delay lines and the connections between them), byvarying the duration of the delays, or by adjusting the amplification orattenuation coefficients of multipliers and filters inserted on thefeed-forward or feedback connections.

[0004] As depicted in FIG. 1, a typical model of reverberation breaksthe reverberation effects into discrete time segments. The first signalthat reaches the listener is the direct-path signal, which undergoes noreflections. Subsequently, a series of discrete “early” reflections arereceived during an initial period of the reverberation response.Finally, after a critical time, the exponentially decaying “late”reverberation is modeled statistically because of the combination andoverlapping of the various reflections. The magnitudes ofReflections_delay and Reverb_delay are typically dependent on the sizeof the room and on the position of the source and the listener in theroom. As illustrated in FIG. 2a, the early reflections and the latereverberation are often generated by two separate processing moduleswhose output signals are combined to produce the output of thereverberation processor. Examples of an early reflection module and alate reverberation module are shown on FIGS. 2b and 2 c, respectively.The lengths of delay lines comprising these modules can be made smalleror larger according to the size of the virtual room.

[0005] Reverberation processors of the type described above are commonlyused for the production of music and soundtracks in recording studios.In these applications, it is not common to produce drastic changes inreverberation characteristics while the sound is playing. Noticeabledrop-offs and other artifacts in the output signal of the processor willoccur, for instance, when the user loads a different reverberation“program” or adjusts the room size parameter (which may involve changingthe network structure or modifying delay lengths). However, suchartifacts are not acceptable in interactive audio applications. Inimmersive 3D games or simulation systems, for instance, differentreverberation settings may be associated with different rooms orenvironments composing a virtual 3D world in which the virtual listeneris allowed to travel. Consequently, in these systems, the reverberationprocessor must be able to change settings while creating a minimum ofdisruptive or distracting audible artifacts.

[0006] Artifacts due to dynamic changes in reverberation settings can beavoided by using two reverberation processors set to simulate differentroom acoustics and cross-fading from one processor to the other (attheir input or at their output). However, it is generally moreadvantageous to use a single reverberation processor and modify itsparameters in order to produce the desired change in room acoustics. Thecoefficients of multipliers and filters comprising a reverberationprocessor are easily changed, without noticeable artifacts, by rampingtheir values to new values over a short time. This avoids theintroduction of sudden discontinuities in the audio signal waveform,audible as pops or clicks. For the same reason, it is necessary to avoidsudden changes in the duration of the delay lines.

[0007] Methods for implementing continuously variable delays are wellknown in the art and are described e. g. in Laakso, T. I. et al. (1996).Splitting the Unit Delay—Tools for Fractional Delay Filter Design. IEEESignal Processing Magazine, Vol. 13, no. 1. However, these methodsinvolve digital audio interpolators, adding significant computationalcomplexity to each delay line. Furthermore, when an interpolator isused, a large variation in a delay length can produce a noticeablechange in the pitch of the delayed signal, which may result in anaudible artifact. Another technique for implementing variable delays isdescribed in Van Duyne, S. A. (1997). A Lossless, Click-Free,Pitchbend-able Delay Line Loop Interpolation Scheme. Proceedings of the1997 International Computer Music Conference and illustrated in FIG. 2d.In this technique, a delay change is realized by cross-fading betweentwo signals read from two different locations (or “taps”) in the delayline's memory. These two taps are provided by two read pointers whoselocations in the memory correspond to the original delay value and thefinal delay value. This method moves the read pointer to a new locationin the delay memory without causing a drop-off, a discontinuity or apitch alteration in the delayed audio signal. However, it causes atemporary timbre alteration known as “comb filter effect”.

[0008] In order to provide a wider range of variation in simulated roomacoustics, it is common to allow control for the echo density of thereverberation decay, suggesting more or less diffusing room walls. Forinstance, the reverberation algorithm described in Dattorro, supraallows to control diffusion by adjusting the feedback coefficients of aset of all-pass filters in the reverberation network. Another kind ofcommon musical effect, also described e. g. in Dattorro supra, is theecho effect, which can be obtained simply by a single delay line withfeedback. A cyclic echo can sometimes be obtained with existingreverberation algorithms as a side effect—usually unwanted—forparticular settings of a reverberation processor's parameters. However,reverberators such as described in the above references do not provideparameters for controlling explicitly and intuitively aspects of an echoeffect embedded in the reverberation decay. Such control would be usefulto simulate larger rooms or semi-open environments such as a courtyard.

SUMMARY OF THE INVENTION

[0009] According to one aspect of the invention, audio artifacts areminimized when changing reverberation settings by causing the amplitudeof a signal from a delay line having its read pointers changed to rampdown prior to moving the read pointer. The amplitude of the signal isthen ramped up after the read pointer has been moved.

[0010] According to another aspect of the invention, a set of delaylines, whose output signals are combined to produce the output of areverberation processor, are updated in sequence so that there is noaudible drop-off in the processor's output signal.

[0011] According to another aspect of the invention, a reverberationprocessor provides continuous control over the salience of aperiodically repeating echo in the late reverberation decay.

[0012] According to another aspect of the invention, a reverberationprocessor simultaneously provides continuous control over the salienceof a periodically repeating echo in the late reverberation decay, andover the duration between successive repetitions of this echo.

[0013] According to another aspect of the invention, a reverberationprocessor simultaneously provides continuous control over the salienceof a periodically repeating echo in the late reverberation decay, andover the “diffusion” (or echo density) of the reverberation decay.Furthermore, these two controls combine so that reducing the amount ofdiffusion has the effect of prolonging the audibility of the repeatingecho along the reverberation decay.

[0014] Other features and advantages of the invention will be apparentin view of the following detailed description and appended drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0015]FIG. 1 is a graph depicting the division of the reverberationresponse into early reflections and late reverberation;

[0016]FIG. 2a is a block diagram of a reverberation processor, made ofan early reflections module and a late reverberation module;

[0017]FIG. 2b is a block diagram of an early reflections module;

[0018]FIG. 2c is a block diagram of a late reverberation module;

[0019]FIG. 2d is a block diagram of a variable delay line using across-fading technique;

[0020]FIG. 3 is a schematic diagram of a modified early reflectionsmodule according to the present invention; and

[0021]FIG. 4 is a schematic diagram of a modified late reverberationmodule according to the present invention.

DESCRIPTION OF THE SPECIFIC EMBODIMENTS

[0022]FIG. 2a depicts a standard reverberation processor. Thereverberation processor 10 has one input and four outputs: Left, Right,Right Surround, and Left Surround. It is has two primary components: theEarly Reflections module 12, and the Late Reverb module 14. The inputsignal is low-pass filtered and then passes into a delay line 15(roomDelay). The delay line 15 has two taps, reverbRead 15 a andreflRead 15 b, which feed the early reflections and reverberation module12 and 14. Each of the four outputs of the Early Reflections module 12is added to one of the four outputs of the Late Reverb module 14, andthese signals are the reverberation outputs.

[0023] In a preferred embodiment of the present invention, thereverberation processor can be controlled by the following set ofparameters (several of which would be affected by a simulated change ofthe room size):

[0024] Reflections Delay: the delay of the first early reflectionrelative to the direct-path signal.

[0025] Reverb Delay: the delay of the late reverberation onset relativeto the first early reflection.

[0026] Reflections Level: the amplitude level of the early reflections.

[0027] Reverb Level: the amplitude level of the late reverberation.

[0028] Decay Time: the time it takes for the late reverberation to decayby 60 dB at low frequencies.

[0029] Decay HF Ratio: the ratio of the high-frequency decay timerelative to the low-frequency decay time.

[0030] Modal Density: the total length of the delay lines comprising theLate Reverb module.

[0031] Diffusion: the echo density in the late reverberation.

[0032] Echo Depth: the salience of a repeating echo in the latereverberation.

[0033] Echo Time: the duration between successive repetitions of an echoin the late reverberation.

[0034] The problem of switching reverberation settings while creatingminimal disruptive or disturbing artifacts is remedied in an embodimentof the present invention by the following mechanism. Any signals comingfrom delay line reads whose location might be changed are multiplied byvariable coefficients. If the reverberation algorithm would not normallycall for a multiply to be performed on that signal, it is multipliedby 1. When the delay line read pointer must be moved, the multiplycoefficient is ramped towards zero. A short time later, when thecoefficient has reached a sufficiently low value, the read pointer ismoved, and the coefficient is then ramped back up to its correct value.If multiple delay line read pointers must be moved, they are movedsequentially so that the audible impact of dips in the delayed signalsis minimized at any moment.

[0035] This method of updating delay lengths in a reverberationprocessor is particularly efficient because:

[0036] the additional computational cost is limited, at most, to onemultiplication per variable delay line read in the network, and,

[0037] a single ramper can be shared between all the delay line reads(since the read pointers are updated one at a time).

[0038] With this scheme, quick drops in audio parts of the reverberationare sometimes audible (the entire reverberation signal is never muted atonce, but aspects of the sound may be heard to dip). Echoes aresometimes created when delay line read pointers are moved to much longervalues. However, the overall effect is usually subtle and much lessdistracting than clicks and pops.

[0039]FIGS. 3 and 4 depict novel implementations of the early and latereverberation blocks 12 and 14 of the standard reverberation processor10 depicted in FIGS. 2b and 2 c. In a preferred embodiment, thereverberation block is implemented by software executed by digitalsignal processors (DSP). However, the implementation of the blocks willbe depicted as schematic diagrams of hardware where the equivalencebetween the hardware and software is well known to persons of skill inthe art.

[0040] For example, the delay lines depicted in FIGS. 2, 3 and 4 areimplemented using samples stored in RAM. The roomDelay delay line 15 hastwo reads 15 a and b which respectively feed the Early Reflectionsmodule 12 and Late Reverb module 14. The locations of the two readpointers are determined by the values of the Reflections Delay andReverb Delay parameters supplied to the Reverb module. The read whichfeeds the Early Reflections, called reflRead, is set by ReflectionsDelay to be up to 300 msec after the start of the delay line. The readwhich feeds the Late Reverb module, called reverbRead, is set by ReverbDelay to be up to 100 msec after reflRead.

[0041] Early Reflections Module

[0042]FIG. 3 depicts a preferred embodiment of the Early Reflectionsmodule 12 which is made up of four parallel all-pass filters 120 a-dwhich are fed by a tapped delay line 122 (EarlyDiff). Each all-passfilter 120 includes an all-pass delay line 121. The input signal, whichcomes from roomDelay delay line 15, is multiplied by the coefficient,ReflLevel 124. The value of this coefficient is set by the parameterReflections Level to control the level of the early reflections in thereverberation sound. When Reflections Delay is modified, ReflLevel isramped down, then the read pointer reflRead is moved to its new locationin the delay line 15, and then ReflLevel is ramped back up.

[0043] After ReflLevel the signal enters the delay line EarlyDiff 122.EarlyDiff 122 has 4 taps 122 a, 122 b (earlyDiffReadLS), 112 c(earlyDiffReadR), and 122 d (earlyDiffReadRS) distributed across itslength, which feed the four all-pass filters 120. The first tap, 122 a,is at a fixed delay length of 0. The range of the other three tap delayschanges proportionally with the amplitude of Reverb Delay.

[0044] The three signals which are read from the EarlyDiff delay line122 are multiplied by first level setting coefficients 128 b-c, setinitially to 1, as indicated in FIG. 3. These first level settingcoefficients 128 are used to ramp down the signal when the delay lineread pointers in the EarlyDiff delay line 122 are moved.

[0045] The four all-pass filters 120 a-d are identical except for thelengths of their all-pass delay lines 121 a-d. The read pointers 132 a(earlyAPreadRS), 132 b (earlyAPreadR), 132 c (earlyAPreadLS), and 132 d(earlyAPreadL) to the delay lines 121 in the four all-passes 120 (andhence the effective length of the all-pass delays) are distributed andscaled proportionally to the amplitude of ReverbDelay. The signals whichare read from the all-pass delay lines 121 are multiplied by secondlevel setting coefficients 130 a-d set initially to 1. These secondlevel setting coefficients 130 are ramped down and then up when theall-pass delay lengths are changed, to avoid artifacts. The all-passcoefficient used in all four filters, named earlyAPcoff, is set to thevalue of 0.4 (in this embodiment).

[0046] Late Reverb Module

[0047]FIG. 4 depicts a preferred embodiment of the Late Reverb module14, made up of an 8-channel Feedback Delay Network (FDN) 140. The singleinput to the Late Reverb module, which comes from the reverbRead tap ofthe roomDelay delay line, feeds into the delay line clusterDelay 142.clusterDelay 142 has eight taps whose read pointer locations areconstant and which feed the FDN.

[0048] There are eight delay lines 140 a-h in the FDN 140, each having adifferent length. The total length of the delay lines 140 a-h isspecified by the Modal Density parameter. The outputs of all thelateDelay delay lines 140 a-h are multiplied by the fbscale coefficients141, which are used to control the Decay Time of the reverberation andto normalize the Feedback Matrix 143. Once these eight signals have thedelayed input signals added to them they are passed through 1-polelow-pass filters 146 and enter the feedback matrix 148. Each low-passfilter has its own filter coefficient (lpcoff0 for the 0th, etc.). Thelow-pass filter coefficients are adjusted according to the settings ofthe parameters Decay Time and Decay HF Ratio to control the decay timeat high frequencies. Whenever one of the lateDelay read pointers 140 a-his updated, the corresponding fbscale and lpcoff coefficients areupdated according to the current settings of Decay Time and Decay HFRatio.

[0049] Continuous Control of Diffusion in the Feedback Matrix

[0050] After the outputs of each lateDelay delay line have beenmultiplied by an fbscale coefficient they are added to a delayed inputsignal, and filtered by a low-pass filter. The resulting signals aremixed together by a unitary mixing feedback matrix 143 before being fedback to the lateDelay delay line inputs. This feedback matrix can bechanged from a diagonal matrix, which sends each of the inputs throughunaffected, to a completely diffuse matrix, which mixes all of the inputsignals into each of the output signals. The amount of mixing affectsthe echo density of the reverb output, and is under control of theDiffusion parameter. A low Diffusion parameter value causes the feedbackmatrix to become diagonal, and a high value causes the matrix to becomediffuse. An intermediate Diffusion value causes the matrix to be more orless diffuse.

[0051] The preferred implementation uses a recursive rotation matrix. Arecursive rotation matrix can be made by applying a 2×2 rotation matrixto each pair of inputs, and then applying the same rotation to theoutputs of the first rotation until all of the inputs have been mixedinto each of the outputs, as described in FIG. 4. The amount of mixingof the final 8×8 matrix can be controlled by one value, lateTan, whichis calculated from the Diffusion parameter as follows:

[0052] The feedback matrix is made unitary by applying a normalizinggain to the values of the fbscale mutlipliers. This value is dependanton the diffusion of the feedback matrix and is calculated as follows:

FdnFbScale=cos³(diffnorm*π/4)

[0053] Producing and Controlling a Repeating Echo in the ReverberationDecay

[0054] The lengths of the lateDelay delay lines 140 are distributedacross a range of values. A repeating echo effect is achieved byreducing the range of lengths across which the delay lines aredistributed. As the range becomes diminished, the repeating echo effectbecomes more distinct.

[0055] The locations of the read pointers for the lateDelay lines in theFDN are determined by the values of Modal Density and Echo Depthaccording to the following equations (DelayLen[i] is the location inmsec of the ith read pointer):

In a preferred embodiment, DMIN=39.1 msec, DMAX=150.1 msec.

[0056] As depicted in FIG. 4, clusterDelay 142 has eight taps whoselocations are constant and which feed the FDN 140. Four of these eighttaps have signals are multiplied by the coefficient halfecho 145. Thiscoefficient is controlled by the parameter Diffusion, and is used inconjunction with EchoDepth to make echoes in the late reverb sound halfas often. In a preferred embodiment:

halfecho=diffnorm

[0057] which has been calculated above.

[0058] The Sequence for Changing Reverberation Delays

[0059] There are five different parts of the reverberation processorwhich have delay line reads which must be updated without causingartifacts. In the preferred embodiment, many of the delay lines aremodified when the Reverb Delay parameter is changed. This parametercontrols the delay between the early reflections and late reverberationby changing the location of reverbRead. Changing the Reverb Delayparameter also spreads out the early reflections so that they span thetime between Reflections Delay and the onset of the late reverberation.This is done by changing the EarlyDiff reads 122 b-d, and by changingthe early all-pass delay lengths 121 a-d.

[0060] The parts that are changed are:

[0061] 1. The pointer reflRead, which reads from roomDelay 15 and feedsthe Early Reflections module 12, is moved when the Reflections Delayparameter is changed.

[0062] 2. The pointer reverbRead, which reads from roomDelay 15 andfeeds the LateReverb module 14, might be moved whenever ReflectionsDelay or Reverb Delay are changed.

[0063] 3. The three reads 122 b-d from the EarlyDiff delay 122 in theEarly Reflections module are moved in sequence whenever Reverb Delaychanges.

[0064] 4. The lengths of the four all-pass delays 121 a-d in the EarlyReflections module 12 are changed in sequence whenever Reverb Delaychanges.

[0065] 5. The lateDelay reads 140 a-h in the Late Reverb module 14 aremoved in sequence whenever the Modal Density, the Echo Depth or the EchoTime is changed.

[0066] The program which controls the DSP includes a function calledGlitchlessSequence which performs the steps necessary to update all theaforementioned delay read pointers. GlitchlessSequence uses a timercallback when it-is necessary to wait CBTIME milliseconds for the nextstep. The delay line reads are changed according to the following pseudocode sequence:

[0067] 1. Change reflRead 15 b;

[0068] 2. Change reverbRead 15 a;

[0069] 3. If Reverb Delay has been changed or is in the process of beingchanged Continue;

[0070] Else if lateDelay read pointers need to be changed go to step#12;

[0071] Else if Reflections Delay has been changed go to step #1.

[0072] Else Break;

[0073] 4. Change DiffReadR 122 c;

[0074] 5. Change DiffReadLS 122 b;

[0075] 6. Change DiffReadRS 122 d;

[0076] 7. Change earlyAPreadL 132 d;

[0077] 8. Change earlyAPreadR 132 b;

[0078] 9. Change earlyAPreadLS 132 c;

[0079] 10. Change earlyAPreadRS 132 a;

[0080] 11. If lateDelay read pointers need to be changed Continue;

[0081] Else if Reflections Delay has been changed go to step #1;

[0082] Else if Reverb Delay has been changed go to step #2;

[0083] Else Break;

[0084] 12. Change lateDelay read pointer 0, 140 a;

[0085] 13. Change lateDelay read pointer 1, 140 b;

[0086] 14. Change lateDelay read pointer 2, 140 c;

[0087] 15. Change lateDelay read pointer 3, 140 d;

[0088] 16. Change lateDelay read pointer 4, 140 e;

[0089] 17. Change lateDelay read pointer 5, 140 f;

[0090] 18. Change lateDelay read pointer 6, 140 g;

[0091] 19. Change lateDelay read pointer 7, 140 h;

[0092] 20. If Reflections Delay has been changed go to step #1;

[0093] Else if Reverb Delay has been changed go to step #2;

[0094] Else if lateDelay read pointers need to be changed go to step#12;

[0095] Else Break;

[0096] Each of these steps is composed of a couple smaller steps similarto those described in the section Specifics of Updating One Delay LineRead Pointer.

[0097] If a change is made to Reflections Delay and the sequence is notin progress GlitchlessSequence will be called starting at step #1. Ifthe sequence is in progress a flag will be set which is used by steps#3, #11, and #20 to make sure the correct delay lines are changed thenext time through the sequence. Similarly, changes to Reverb Delay andchanges to the lateDelay read pointers (caused by changes in ModalDensity, Echo Depth or Echo Time) will start the GlitchlessSequence atsteps #2 and #12, respectively, or, if the sequence is already inprogress, set their own flags.

[0098] The Specifics of Changing One Delay Line Read Pointer

[0099] The reverberation processor uses an interpolate instruction toramp a coefficient for one value, called Ramp1Sub, to another value,called Ramp1Dest, at a rate determined by a variable called RampConst.For example, when the ReflRead tap to the roomDelay delay line 15 is tobe moved then the ReflLevel coefficient would be initially equal toRamp1Sub and would be ramped as described below.

[0100] Specifically, at each sample period:

Ramp1Sub=(RampConst*Ramp1Sub)+((1−RampConst)*Ramp1Dest)

[0101] By replacing the ReflLevel coefficient with the new valueRamp1Sub at each sample period, the delayed signal can be ramped down orup, depending on the value of Ramp1Dest.

[0102] The value of RampConst determines how fast Ramp1Sub approachesthe value of Ramp1Dest, and therefore how much time each step of theramping sequence will take. For a given ramp time in milliseconds, sayCBTIME, RampConst is set to:

RampConst=2{circumflex over ( )}(−15/(CBTIME*SampleRate/1000))

[0103] If Ramp1Dest were set to zero, for example, it would takeRamp1Sub CBTIME milliseconds to reach 15 bits below its original value.In the preferred embodiment CBTIME is 20 milliseconds.

[0104] The primary steps to move one delay line read pointer, reflReadfor example, are as follows: ramp down ReflLevel, move reflRead, andramp ReflLevel back up. However, to accomplish these steps there is amore detailed sequence of events that must take place.

[0105] 1. Set Ramp1Dest to the value of ReflLevel. This must be done sothat the ramper does not ramp Ramp1Sub away before we can substitute itin for ReflLevel.

[0106] 2. Set Ramp1Sub to the value of ReflLevel, so that there will beno level jump when the substitution is made.

[0107] 3. Replace ReflLevel with Ramp1Sub in the instruction thatmultiplies the signal read from reflRead.

[0108] 4. Set Ramp1Dest to zero, so that the ramper starts ramping down.

[0109] 5. Wait CBTIME milliseconds while Ramp1Sub ramps down.

[0110] 6. Move reflRead to the new location.

[0111] 7. Set Ramp1Dest to the value of ReflLevel to start ramping up.

[0112] 8. Wait CBTIME milliseconds while Ramp1Sub ramps up.

[0113] 9. If ReflLevel has been changed since step 7,

[0114] Set ReflLevel to the value of Ramp1Sub,

[0115] Replace Ramp1Sub with ReflLevel in the multiply instruction,

[0116] Call the routine that would normal ramp ReflLevel if there wereno update of the reflRead pointer.

[0117] 10. If ReflLevel has not been changed, replace Ramp1Sub withReflLevel in the multiply instruction

[0118] If another delay line read pointer must be changed it can beginits own similar sequence immediately. It is not necessary to waitanother time step.

[0119] The invention has now been described with reference to thepreferred embodiments. Alternatives and substitutions will now beapparent to persons of skill in the art. For example, the particularramping algorithm or delay configurations described can be modified bypersons of skill in the art while practicing the principles of theinvention. Accordingly, it is not intended to limit the invention exceptas provided by the appended claims.

What is claimed is:
 1. A reverberation processor comprising: a plurality of delay lines implemented in delay line memory, the delay lines being operable to generate a reverberation decay in response to an input signal; and hardware operable to introduce an echo effect into the reverberation decay and to provide a control parameter to control salience of the echo effect.
 2. The reverberation processor of claim 1, wherein an increase and a decrease in the salience of the echo effect is dependent upon the control parameter.
 3. The reverberation processor of claim 1, wherein the control parameter provides continuous control over the salience of the echo effect.
 4. The reverberation processor of claim 1, wherein the echo effect is embedded within the reverberation decay.
 5. The reverberation processor of claim 1, wherein a range of delay lengths across which the plurality of delay lines is distributed is reduced to produce a repeating echo effect.
 6. The reverberation processor of claim 5, wherein the repeating echo effect is made more distinct by further decreasing the range of lengths of the plurality of delay lines.
 7. The reverberation processor of claim 1, wherein the control parameter is an echo depth control parameter and locations of read pointers of the plurality of delay lines are based on the echo depth control parameter.
 8. The reverberation processor of claim 1, wherein the echo effect is a repeating echo pattern and an echo time control parameter controls a duration between successive repetitions of an echo.
 9. The reverberation processor of claim 1, which comprises a feedback matrix connected to inputs and outputs of the plurality of delay lines, the feedback matrix being changed between a diagonal matrix and a diffuse matrix to change the echo effect in the reverberation decay.
 10. The reverberation processor of claim 9, wherein the diffusion matrix changes the echo density in the reverberation decay.
 11. The reverberation processor of claim 10, wherein the echo density is dependent upon a diffusion parameter, the changing of the feedback matrix being dependent upon the diffusion parameter.
 12. The reverberation processor of claim 9, wherein the feedback matrix is a recursive rotation matrix.
 13. The reverberation processor of claim 1, which is implemented using software.
 14. A method of providing reverberation, the method comprising: generating a reverberation decay in response to an input signal using a plurality of delay lines implemented in delay line memory; and introducing an echo effect into the reverberation decay and controlling the salience of the echo effect using a control parameter.
 15. The method of claim 14, wherein an increase and a decrease in the salience of the echo effect is dependent upon the control parameter.
 16. The method of claim 14, wherein the control parameter provides continuous control over the salience of the echo effect.
 17. The method of claim 14, wherein the echo effect is embedded within the reverberation decay.
 18. The method of claim 14, wherein a range of delay lengths across which the plurality of delay lines is distributed is reduced to produce a repeating echo effect.
 19. The method of claim 18, wherein the repeating echo effect is made more distinct by further decreasing the range of lengths of the plurality of delay lines.
 20. The method of claim 14, wherein the control parameter is an echo depth control parameter and locations of read pointers of the plurality of delay lines are derived from the echo depth control parameter.
 21. The method of claim 14, wherein the echo effect is a repeating echo pattern and an echo time control parameter controls a duration between successive repetitions of an echo.
 22. The method of claim 14, which comprises: applying delay line outputs of the plurality of delay lines to a feedback matrix; applying feedback matrix outputs of the feedback matrix to delay line inputs of the plurality of delay lines; and changing the feedback matrix between a diagonal matrix and a diffuse matrix to change the echo effect in the reverberation decay.
 23. The method of claim 22, wherein the diffusion matrix changes the echo density in the reverberation decay.
 24. The reverberation processor of claim 23, wherein the echo density is dependent upon a diffusion parameter, the changing of the feedback matrix being dependent upon the diffusion parameter.
 25. The reverberation processor of claim 22, wherein the feedback matrix is a recursive rotation matrix.
 26. A software product which, when executed by a digital signal processor, causes the processor to: generate a reverberation decay in response to an input signal using a plurality of delay lines implemented in delay line memory; and introduce an echo effect into the reverberation decay and provide a control parameter to control the salience of the echo effect.
 27. The software product of claim 26, wherein an increase and a decrease in the salience of the echo effect is dependent upon the control parameter.
 28. The software product of claim 26, wherein the echo effect is a repeating echo pattern and an echo time control parameter controls a duration between successive repetitions of an echo.
 29. The software product of claim 26, wherein delay line outputs of the plurality of delay lines are applied to a feedback matrix; feedback matrix outputs of the feedback matrix are applied to delay line inputs of the plurality of delay lines; and the feedback matrix is changed between a diagonal matrix and a diffuse matrix to change the echo effect in the reverberation decay.
 30. A reverberation processor comprising: means for generating a reverberation decay in response to an input signal using a plurality of delay lines implemented in delay line memory; and means for introducing an echo effect into the reverberation decay and providing a control parameter to control the salience of the echo effect. 